#ifndef __AW_ENTITY
#define __AW_ENTITY

#ifndef M_PI
#define M_PI 3.141592653589
#endif

#ifndef _WIN32
#ifndef HAVE_STRLWR
char *strlwr (char *str);
#endif
long GetTickCount();
#endif


class AW_Entity {
public:
	AW_Entity(void);
	AW_Entity(FILE *fp);
	virtual ~AW_Entity(void);

	Symbol *get_class(void);
	virtual bool is_a(char *c);
	virtual bool is_a(Symbol *c);
        
	virtual bool load(FILE *fp);
	virtual bool save(FILE *fp);

	virtual void pause(void);
	virtual void unpause(void);

	/* Debug Reports: */ 
	static void set_debug_report_filename(char *name);
	static char *get_debug_report_filename(void);
	static void set_debug_report(void);
	static void unset_debug_report(void);
	static bool debug_report_p(void) {return debug_report;}
	static void write_debug_report(const char *fmt, ...);

protected:
	Symbol *class_name;

private:
	static bool debug_report;
	static FILE *debug_report_file;
	static char debug_report_filename[256];

}; /* AW_Entity */ 


#endif

